// 封装接口方法
// 每个方法负责请求一个url地址
// 逻辑页面，导入这个接口方法就可以发请求
// import request from '@/utils/request.js'
// import request from '@/utils/request.js'
// import request from '@/utils/request.js'
import axios from '@/utils/request.js'
import { getStorage } from '@/utils/storage'
// 既引入也向外按需导出，所有引入过来的方法（中转）
export * from './ArticleDetail'
// 登录接口
// axios内部，会把参数对象转换成json字符串格式发给后台
// 会自动携带请求参数（headers）里Content-type:'application/json'帮你添加好
export const loginAPI = ({ mobile, code }) => axios({
  url: '/v1_0/authorizations',
  method: 'POST',
  data: {
    mobile,
    code
  }
})

// 用户关注
export const userFollowedAPI = ({ userId }) => axios({
  url: '/v1_0/user/followings',
  method: 'POST',
  data: {
    target: userId
  }
})
// 用户取消关注
export const userUnFollowedAPI = ({ userId }) => axios({
  url: `/v1_0/user/followings/${userId}`,
  method: 'DELETE'
})

// 用户- 获取个人资料
export const userProfileAPI = () => axios({
  url: '/v1_0/user/profile'
})

// 用户-获取基本信息(我的页面)
export const getUserInfoAPI = () => axios({
  url: '/v1_0/user'
})

// 用户-更新头像
export const updateUserPhotoAPI = (fd) => axios({
  url: '/v1_0/user/photo',
  method: 'PATCH',
  data: fd // 是一会传进来的new FormData()表单对象
})

// 用户-更新基本资料
export const updateUserProfileAPI = (dataObj) => {
// 判断有什么值再传
  const obj = {
    name: '',
    gender: 0,
    birthday: '',
    intro: ''
  }
  for (const prop in obj) { // 遍历参数对象的每个key
    if (dataObj[prop === undefined]) {
      delete obj[prop] // 从obj身上移除这对属性和值
    } else {
      obj[prop] = dataObj[prop]
    }
  }
  return axios({
    url: '/v1_0/user/profile',
    method: 'PATCH', // 局部更新-> PUT全都更新
    data: obj
    // data不会忽略值为null的那对key+value ,params会忽略
    // name, // 昵称
    // gender, // 性别0男女1
    // birthday, // 生日要求格式（年-月-日）
    // intro // 个人介绍
  })
}

// 用户-刷新token
export const getNewTokenAPI = () => axios({
  url: '/v1_0/authorizations',
  method: 'PUT',
  headers: {
    // 请求拦截器统一携带的是token,而这次请求需要携带refresh_token 故在axios请求拦截器中的判断就是为了这种情况
    Authorization: 'Bearer' + getStorage('refresh_token')
  }
})

// 频道- 获取所有频道
export const getAllChannelsAPI = () => axios({
  url: '/v1_0/channels',
  method: 'GET'
})

// 频道-获取用户选择的频道 用户没有登录默认返回后台设置的默认频道列表
export const getUserChannelsAPI = () => axios({
  url: '/v1_0/user/channels',
  method: 'GET'
})

// 频道-更新覆盖频道
export const updateChannelsAPI = ({ channels }) => axios({
  url: '/v1_0/user/channels',
  method: 'PUT',
  data: {
    channels// 用户已选整个频道数组
  }
})

// 删除用户指定的频道
export const removeTheChannelAPI = ({ channelId }) => axios({
  url: `/v1_0/user/channels/${channelId}`,
  method: 'DELETE'
})

// 搜索- 联想菜单
export const suggestListAPI = ({ keywords }) => axios({
  url: '/v1_0/suggestion',
  method: 'GET',
  params: {
    q: keywords
  }
})

// 搜索-搜索结果列表
export const searchResultAPI = ({ page = 1, per_page = 20, q }) => axios({
  url: '/v1_0/search',
  method: 'GET',
  params: {
    page,
    per_page,
    q
  }
})

// 评论-点赞
export const commentLikingAPI = ({ comId }) => axios({
  url: '/v1_0/comment/likings',
  method: 'POST',
  data: {
    target: comId
  }
})

// 评论-取消点赞
export const commentDislikingAPI = ({ comId }) => axios({
  url: `/v1_0/comment/likings/${comId}`,
  method: 'DELETE'
})
